home *** CD-ROM | disk | FTP | other *** search
- package sun.net.www.http;
-
- import java.io.BufferedInputStream;
- import java.io.DataInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.InetAddress;
- import java.net.SocketException;
- import java.net.URL;
- import java.net.UnknownHostException;
- import java.util.StringTokenizer;
- import sun.net.NetworkClient;
- import sun.net.TelnetInputStream;
- import sun.net.www.MessageHeader;
-
- public final class HttpClient extends NetworkClient {
- static final boolean debug = false;
- static final String userAgentString = "User-Agent: " + System.getProperty("http.agent", "Java" + System.getProperty("java.version")) + "\r\n";
- static final String acceptString = "Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n";
- static final int httpPortNumber = 80;
- public static boolean useProxyForFirewall = Boolean.getBoolean("firewallSet");
- public static String firewallProxyHost = System.getProperty("firewallHost");
- public static int firewallProxyPort = Integer.getInteger("firewallPort", 80);
- public static boolean useProxyForCaching = Boolean.getBoolean("proxySet");
- public static String cachingProxyHost = System.getProperty("proxyHost", "sunweb.ebay");
- public static int cachingProxyPort = Integer.getInteger("proxyPort", 80);
- private String proxy;
- private int proxyPort;
- // $FF: renamed from: OK int
- public static final int field_0 = 200;
- public static final int CREATED = 201;
- public static final int ACCEPTED = 202;
- public static final int PARTIAL = 203;
- public static final int MOVED = 301;
- public static final int FOUND = 302;
- public static final int METHOD = 303;
- public static final int BAD = 400;
- public static final int UNAUTHORIZED = 401;
- public static final int PAYMENT_REQUIRED = 402;
- public static final int FORBIDDEN = 403;
- public static final int NOT_FOUND = 404;
- public static final int INTERNAL_ERROR = 500;
- public static final int NOT_IMPLEMENTED = 501;
- int status;
- MessageHeader mimeHeader;
- boolean usingProxy;
- String host;
- String authentication;
- URL url;
-
- public synchronized void openServer(String var1, int var2) throws UnauthorizedHttpRequestException, UnknownHostException, SocketException, IOException {
- this.host = var1;
- boolean var3 = false;
- SecurityManager var4 = System.getSecurityManager();
- if (var4 != null) {
- var4.checkConnect(var1, var2);
- }
-
- if (this.url.getProtocol().equals("http")) {
- if (useProxyForCaching) {
- super.openServer(cachingProxyHost, cachingProxyPort);
- this.usingProxy = true;
- return;
- }
-
- try {
- super.openServer(var1, var2);
- } catch (UnknownHostException var6) {
- if (!useProxyForFirewall) {
- throw var6;
- }
-
- if (this.proxy == null) {
- super.openServer(firewallProxyHost, firewallProxyPort);
- } else {
- super.openServer(this.proxy, this.proxyPort);
- }
-
- this.usingProxy = true;
- } catch (SocketException var7) {
- if (!useProxyForFirewall) {
- throw var7;
- }
-
- if (this.proxy == null) {
- super.openServer(firewallProxyHost, firewallProxyPort);
- } else {
- super.openServer(this.proxy, this.proxyPort);
- }
-
- this.usingProxy = true;
- }
- } else {
- if (this.proxy == null) {
- super.openServer(firewallProxyHost, firewallProxyPort);
- } else {
- super.openServer(this.proxy, this.proxyPort);
- }
-
- this.usingProxy = true;
- }
-
- var3 = true;
- }
-
- protected void getRequestStatus(String var1, String var2) throws UnauthorizedHttpRequestException, FileNotFoundException {
- if (!var1.startsWith("HTTP/1.0 ") && !var1.startsWith("HTTP/1.1 ")) {
- this.status = -1;
- } else {
- this.status = Integer.parseInt(var1.substring(9, 12));
- }
-
- switch (this.status) {
- case 400:
- case 402:
- case 403:
- case 404:
- case 500:
- case 501:
- throw new FileNotFoundException(var1 + " -- " + var2);
- case 401:
- System.err.println("HTTPClient: Throwing UnauthorizedHttpRequestException");
- throw new UnauthorizedHttpRequestException(this.url, this);
- default:
- }
- }
-
- public String getURLFile(URL var1) {
- if (this.usingProxy) {
- String var2 = var1.getProtocol() + "://" + var1.getHost();
- if (var1.getPort() != -1) {
- var2 = var2 + ":" + var1.getPort();
- }
-
- return var2 + var1.getFile();
- } else {
- return var1.getFile();
- }
- }
-
- public void processRequest(String var1) throws UnauthorizedHttpRequestException, IOException {
- BufferedInputStream var2 = (BufferedInputStream)super.serverInput;
- String var3 = null;
- String var4 = null;
- var2.mark(200);
- DataInputStream var5 = new DataInputStream(new TelnetInputStream(super.serverInput, false));
-
- while(true) {
- String var6 = var5.readLine();
- if (var4 == null) {
- if (var6 == null) {
- throw new SocketException("Unexpected EOF");
- }
-
- var4 = new String(var6);
- }
-
- if (var6 == null || var6.length() == 0) {
- break;
- }
-
- if (var6.startsWith("HTTP/1.0") || var6.startsWith("HTTP/1.1")) {
- var3 = new String(var6);
- if (!var4.startsWith("HTTP/1.0") && !var4.startsWith("HTTP/1.1")) {
- System.err.println("Warning: The first line from " + this.url + " was not HTTP/1.0 compliant.");
- System.err.println(" '" + var4 + "'");
- }
- break;
- }
- }
-
- var2.reset();
-
- try {
- if (var3 != null) {
- try {
- this.getRequestStatus(var3, var1);
- } finally {
- this.mimeHeader = new MessageHeader(super.serverInput);
- }
-
- return;
- }
-
- if (var4 == null || var4.length() == 0) {
- throw new SocketException("Unexpected EOF");
- }
-
- if (var4.indexOf("hostname unknown") != -1) {
- throw new UnknownHostException(this.host);
- }
-
- if (var4.indexOf("refused") != -1 || var4.startsWith("</BODY>")) {
- throw new SocketException("Connection refused");
- }
- } catch (UnauthorizedHttpRequestException var15) {
- throw var15;
- } catch (Exception var16) {
- String var7 = this.mimeHeader != null ? this.mimeHeader.findValue("content-length") : null;
- boolean var8 = false;
- if (var7 == null || Integer.parseInt(var7) == 0) {
- try {
- this.closeServer();
- } catch (Throwable var13) {
- }
-
- throw var16 instanceof IOException ? (IOException)var16 : new IOException(((Throwable)var16).toString());
- }
- }
-
- }
-
- public void closeServer() {
- if (this.url != null) {
- this.url = null;
- }
-
- try {
- super.closeServer();
- } catch (Throwable var1) {
- }
- }
-
- public MessageHeader getMimeHeader() {
- return this.mimeHeader;
- }
-
- public String getHeaderField(String var1) {
- return this.mimeHeader != null ? this.mimeHeader.findValue(var1) : null;
- }
-
- public int getStatus() {
- return this.status;
- }
-
- public InputStream getInputStream() {
- return super.serverInput;
- }
-
- public OutputStream getOutputStream() {
- return super.serverOutput;
- }
-
- public void setAuthentication(String var1) {
- this.authentication = var1;
- }
-
- public void setAuthentication(AuthenticationInfo var1) {
- if (var1 == null) {
- this.authentication = "";
- } else {
- this.authentication = var1.auth;
- }
- }
-
- public String getAuthentication() {
- if (this.authentication == null) {
- return "";
- } else {
- String var1 = "Authorization: " + this.authentication + "\r\n";
- return var1;
- }
- }
-
- public String getAuthentication(URL var1) {
- AuthenticationInfo var2 = AuthenticationInfo.getAuth(var1);
- if (var2 == null) {
- this.authentication = "";
- } else {
- this.authentication = var2.auth;
- }
-
- return this.getAuthentication();
- }
-
- public String getAuthenticationScheme() {
- return this.getAuthenticationField(1);
- }
-
- public String getAuthenticationRealm() {
- return this.getAuthenticationField(3);
- }
-
- public String getAuthenticationField(int var1) {
- String var2 = this.mimeHeader != null ? this.mimeHeader.findValue("www-authenticate") : null;
- if (var2 == null) {
- return null;
- } else {
- StringTokenizer var3 = new StringTokenizer(var2, " =\"");
-
- while(true) {
- --var1;
- if (var1 <= 0) {
- return var3.hasMoreTokens() ? var3.nextToken() : null;
- }
-
- var3.nextToken();
- }
- }
- }
-
- public HttpClient(URL var1, String var2, String var3, int var4) throws UnauthorizedHttpRequestException, IOException {
- this.proxyPort = -1;
- this.usingProxy = false;
- this.proxy = var3;
- this.proxyPort = var4;
- this.authentication = var2;
-
- try {
- InetAddress var5 = InetAddress.getByName(var1.getHost());
- var1 = new URL(var1.getProtocol(), var5.getHostAddress(), var1.getPort(), var1.getFile());
- } catch (UnknownHostException var6) {
- }
-
- this.url = var1;
- int var7 = var1.getPort();
- if (var7 == -1) {
- var7 = 80;
- }
-
- this.openServer(var1.getHost(), var7);
- }
-
- public HttpClient(URL var1, String var2, int var3) throws UnauthorizedHttpRequestException, IOException {
- this.proxyPort = -1;
- this.usingProxy = false;
- this.proxy = var2;
- this.proxyPort = var3;
-
- try {
- InetAddress var4 = InetAddress.getByName(var1.getHost());
- var1 = new URL(var1.getProtocol(), var4.getHostAddress(), var1.getPort(), var1.getFile());
- } catch (UnknownHostException var5) {
- }
-
- this.url = var1;
- int var6 = var1.getPort();
- if (var6 == -1) {
- var6 = 80;
- }
-
- this.openServer(var1.getHost(), var6);
- }
-
- public HttpClient(URL var1, String var2) throws UnauthorizedHttpRequestException, IOException {
- this(var1, var2, (String)null, -1);
- }
-
- public HttpClient(URL var1) throws UnauthorizedHttpRequestException, IOException {
- this(var1, (String)null, -1);
- }
- }
-